package com.app.util;

import java.io.File;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

/**
 * 工具类
 * @author pa_pa
 * @date 2014年12月29日15:33:36
 */
public class MyUtil {
	private static DecimalFormat df=new DecimalFormat("#.####");
	
	/**
	 * 根据表名，列名，列值 查询
	 * @param table(表名)
	 * @param column(列名/字段)
	 * @param columnValue(列值/字段值)
	 * @param sort(排序字段)
	 * @param desc(true-desc/false-asc)
	 * @return List<Record>
	 */
	public static List<Record> getList(String table,String column,String columnValue,String sort,boolean desc){
		String _sort="";
		if(StrKit.notBlank(sort)){
			_sort="order by "+sort+(desc==true?" desc":" asc");
		}
		if(StrKit.notBlank(table,column,columnValue)){
			return Db.find("select * from "+table+" where "+column+" in("+columnValue+")"+_sort);
		}
		return new ArrayList<Record>();
	}
	/**
	 * 将list<Record>中某字段column，拼接成用","分割的字符串
	 * @param list
	 * @param column
	 * @return str
	 */
	public static String getStr(List<Record> list,String column){
		String str="";
		if(list!=null){
			for(int i=0;i<list.size();i++){
				if(i==list.size()-1)
					str+=list.get(i).get(column);
				else
					str+=list.get(i).get(column)+",";
			}
		}
		return str;
	}
	/**
	 * 将List<Record>转换成Map<String,Record>
	 * @param list
	 * @param key(键值)，如Map<key,Record>
	 * @return
	 */
	public static Map<String,Record> getMap(List<Record> list,String key){
		Map<String,Record> map=new HashMap<String, Record>();
		if(StrKit.notNull(list) && StrKit.notBlank(key)){
			for(Record rd: list){
				map.put(rd.get(key)+"", rd);
			}
		}
		return map;
	}
	/**
	 * 将List<Record>进行排序
	 * @param list
	 * @param sortColunm(需要进行排序的字段)[注：只支持int类型字段]
	 * @param desc(true-从大到小/false-从小到大)
	 * @return sortList
	 */
	public static List<Record> getSort(List<Record> list,String sortColunm,boolean desc){
		if(list!=null){
			if(desc){
				for(int i=0;i<list.size();i++){
					for(int j=0;j<list.size()-i-1;j++){
						if(list.get(j).getInt(sortColunm)>list.get(j+1).getInt(sortColunm)){
							Record r=list.get(j);
							list.set(j, list.get(j+1));
							list.set(j+1, r);
						}
					}
				}
			}else{
				for (int i = 0; i < list.size(); i++) {
					for(int j=0;j<list.size()-1;j++){
						if(list.get(i).getInt(sortColunm)>list.get(j).getInt(sortColunm)){
							Record r=list.get(i);
							list.set(i, list.get(j));
							list.set(j, r);
						}
					}
				}
			}
		}
		return list;
	}
	/**
	 * 强制转换int类型
	 * @param obj
	 * @param def
	 * @return
	 */
	public static int parseInt(Object obj,int def){
		try{
			return Integer.parseInt(obj.toString());
		}catch(Exception e){
			return def;
		}
	}
	public static double parseDouble(Object obj,double def){
		try{
			return Double.parseDouble(obj.toString());
		}catch(Exception e){
			return def;
		}
	}
	/**
	 * 将小数截取到小数点某几位
	 * @param d	小数
	 * @param regex	正则表达式【#.## = 0.00】
	 * @return
	 */
	public static double formatDouble(double d,String regex){
		try{
			if(regex==null || regex.equals("")){
				return formatDouble(d);
			}else{
				DecimalFormat dfmt=new DecimalFormat(regex);
				return parseDouble(dfmt.format(d),d);
			}
		}catch(Exception e){
			return d;
		}
	}
	public static double formatDouble(double d){
		try{
			d=parseDouble(df.format(d),d);
		}catch(Exception e){
			return d;
		}
		return d;
	}
	public static String parseString(Object obj,String def){
		try{
			return obj.toString();
		}catch(Exception e){
			return def;
		}
	}
	/**
	 * 根据路径创建文件夹
	 * @param path
	 */
	public static void createFolder(String path){
		File file = new File(path);
		if (!file.exists()) {
			file.mkdirs();
		}
	}
	/**
	 * 根据路径删除文件夹
	 * @param path
	 */
	public static void deleteFolder(String path){
		File file = new File(path);
		if (file.exists() && file.isDirectory()) {
			File[] fs= file.listFiles();
			for(int i=0;i<fs.length;i++){
				if(fs[i].isFile()){
					deleteFile(fs[i].getAbsolutePath());
				}else{
					deleteFolder(fs[i].getAbsolutePath());
				}
			}
			file.delete();
		}
	}
	/**
	 * 根据路径删除文件
	 * @param path
	 */
	public static void deleteFile(String path){
		File file = new File(path);
		if(file.exists() && file.isFile()){
			file.delete();
		}
	}

	public static void main(String[] args) {

		String path="E:\test\1.1";

	}

}
